YES(O(1),O(n^1)) We are left with following problem, upon which TcT provides the certificate YES(O(1),O(n^1)). Strict Trs: { f(a, empty()) -> g(a, empty()) , f(a, cons(x, k)) -> f(cons(x, a), k) , g(empty(), d) -> d , g(cons(x, k), d) -> g(k, cons(x, d)) } Obligation: runtime complexity Answer: YES(O(1),O(n^1)) The input is overlay and right-linear. Switching to innermost rewriting. We are left with following problem, upon which TcT provides the certificate YES(O(1),O(n^1)). Strict Trs: { f(a, empty()) -> g(a, empty()) , f(a, cons(x, k)) -> f(cons(x, a), k) , g(empty(), d) -> d , g(cons(x, k), d) -> g(k, cons(x, d)) } Obligation: innermost runtime complexity Answer: YES(O(1),O(n^1)) We add following weak dependency pairs: Strict DPs: { f^#(a, empty()) -> c_1(g^#(a, empty())) , f^#(a, cons(x, k)) -> c_2(f^#(cons(x, a), k)) , g^#(empty(), d) -> c_3() , g^#(cons(x, k), d) -> c_4(g^#(k, cons(x, d))) } and mark the set of starting terms. We are left with following problem, upon which TcT provides the certificate YES(O(1),O(n^1)). Strict DPs: { f^#(a, empty()) -> c_1(g^#(a, empty())) , f^#(a, cons(x, k)) -> c_2(f^#(cons(x, a), k)) , g^#(empty(), d) -> c_3() , g^#(cons(x, k), d) -> c_4(g^#(k, cons(x, d))) } Strict Trs: { f(a, empty()) -> g(a, empty()) , f(a, cons(x, k)) -> f(cons(x, a), k) , g(empty(), d) -> d , g(cons(x, k), d) -> g(k, cons(x, d)) } Obligation: innermost runtime complexity Answer: YES(O(1),O(n^1)) No rule is usable, rules are removed from the input problem. We are left with following problem, upon which TcT provides the certificate YES(O(1),O(n^1)). Strict DPs: { f^#(a, empty()) -> c_1(g^#(a, empty())) , f^#(a, cons(x, k)) -> c_2(f^#(cons(x, a), k)) , g^#(empty(), d) -> c_3() , g^#(cons(x, k), d) -> c_4(g^#(k, cons(x, d))) } Obligation: innermost runtime complexity Answer: YES(O(1),O(n^1)) The weightgap principle applies (using the following constant growth matrix-interpretation) The following argument positions are usable: Uargs(c_1) = {1}, Uargs(c_2) = {1}, Uargs(c_4) = {1} TcT has computed following constructor-restricted matrix interpretation. [empty] = [0] [0] [cons](x1, x2) = [1 0] x1 + [1 0] x2 + [0] [0 0] [0 0] [0] [f^#](x1, x2) = [0] [0] [c_1](x1) = [1 0] x1 + [0] [0 1] [0] [g^#](x1, x2) = [1] [0] [c_2](x1) = [1 0] x1 + [1] [0 1] [0] [c_3] = [0] [0] [c_4](x1) = [1 0] x1 + [0] [0 1] [2] This order satisfies following ordering constraints Further, it can be verified that all rules not oriented are covered by the weightgap condition. We are left with following problem, upon which TcT provides the certificate YES(O(1),O(n^1)). Strict DPs: { f^#(a, empty()) -> c_1(g^#(a, empty())) , f^#(a, cons(x, k)) -> c_2(f^#(cons(x, a), k)) , g^#(cons(x, k), d) -> c_4(g^#(k, cons(x, d))) } Weak DPs: { g^#(empty(), d) -> c_3() } Obligation: innermost runtime complexity Answer: YES(O(1),O(n^1)) The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed. { g^#(empty(), d) -> c_3() } We are left with following problem, upon which TcT provides the certificate YES(O(1),O(n^1)). Strict DPs: { f^#(a, empty()) -> c_1(g^#(a, empty())) , f^#(a, cons(x, k)) -> c_2(f^#(cons(x, a), k)) , g^#(cons(x, k), d) -> c_4(g^#(k, cons(x, d))) } Obligation: innermost runtime complexity Answer: YES(O(1),O(n^1)) We use the processor 'matrix interpretation of dimension 1' to orient following rules strictly. DPs: { 3: g^#(cons(x, k), d) -> c_4(g^#(k, cons(x, d))) } Sub-proof: ---------- The following argument positions are usable: Uargs(c_1) = {1}, Uargs(c_2) = {1}, Uargs(c_4) = {1} TcT has computed following constructor-based matrix interpretation satisfying not(EDA). [empty] = [0] [f](x1, x2) = [1] x1 + [1] x2 + [0] [g](x1, x2) = [1] x1 + [1] x2 + [0] [cons](x1, x2) = [1] x1 + [1] x2 + [2] [f^#](x1, x2) = [2] x1 + [2] x2 + [0] [c_1](x1) = [1] x1 + [0] [g^#](x1, x2) = [2] x1 + [0] [c_2](x1) = [1] x1 + [0] [c_3] = [0] [c_4](x1) = [1] x1 + [0] This order satisfies following ordering constraints [f^#(a, empty())] = [2] a + [0] >= [2] a + [0] = [c_1(g^#(a, empty()))] [f^#(a, cons(x, k))] = [2] a + [2] k + [2] x + [4] >= [2] a + [2] k + [2] x + [4] = [c_2(f^#(cons(x, a), k))] [g^#(cons(x, k), d)] = [2] k + [2] x + [4] > [2] k + [0] = [c_4(g^#(k, cons(x, d)))] The strictly oriented rules are moved into the corresponding weak component(s). We are left with following problem, upon which TcT provides the certificate YES(O(1),O(n^1)). Strict DPs: { f^#(a, empty()) -> c_1(g^#(a, empty())) , f^#(a, cons(x, k)) -> c_2(f^#(cons(x, a), k)) } Weak DPs: { g^#(cons(x, k), d) -> c_4(g^#(k, cons(x, d))) } Obligation: innermost runtime complexity Answer: YES(O(1),O(n^1)) The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed. { g^#(cons(x, k), d) -> c_4(g^#(k, cons(x, d))) } We are left with following problem, upon which TcT provides the certificate YES(O(1),O(n^1)). Strict DPs: { f^#(a, empty()) -> c_1(g^#(a, empty())) , f^#(a, cons(x, k)) -> c_2(f^#(cons(x, a), k)) } Obligation: innermost runtime complexity Answer: YES(O(1),O(n^1)) Due to missing edges in the dependency-graph, the right-hand sides of following rules could be simplified: { f^#(a, empty()) -> c_1(g^#(a, empty())) } We are left with following problem, upon which TcT provides the certificate YES(O(1),O(n^1)). Strict DPs: { f^#(a, empty()) -> c_1() , f^#(a, cons(x, k)) -> c_2(f^#(cons(x, a), k)) } Obligation: innermost runtime complexity Answer: YES(O(1),O(n^1)) We use the processor 'matrix interpretation of dimension 1' to orient following rules strictly. DPs: { 1: f^#(a, empty()) -> c_1() } Sub-proof: ---------- The following argument positions are usable: Uargs(c_2) = {1} TcT has computed following constructor-based matrix interpretation satisfying not(EDA). [empty] = [1] [f](x1, x2) = [1] x1 + [1] x2 + [0] [g](x1, x2) = [1] x1 + [1] x2 + [0] [cons](x1, x2) = [1] x1 + [1] x2 + [0] [f^#](x1, x2) = [2] x2 + [0] [c_1](x1) = [1] x1 + [0] [g^#](x1, x2) = [1] x1 + [1] x2 + [0] [c_2](x1) = [1] x1 + [0] [c_3] = [0] [c_4](x1) = [1] x1 + [0] [c] = [0] [c_1] = [0] [c_2](x1) = [1] x1 + [0] This order satisfies following ordering constraints [f^#(a, empty())] = [2] > [0] = [c_1()] [f^#(a, cons(x, k))] = [2] k + [2] x + [0] >= [2] k + [0] = [c_2(f^#(cons(x, a), k))] The strictly oriented rules are moved into the corresponding weak component(s). We are left with following problem, upon which TcT provides the certificate YES(O(1),O(n^1)). Strict DPs: { f^#(a, cons(x, k)) -> c_2(f^#(cons(x, a), k)) } Weak DPs: { f^#(a, empty()) -> c_1() } Obligation: innermost runtime complexity Answer: YES(O(1),O(n^1)) The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed. { f^#(a, empty()) -> c_1() } We are left with following problem, upon which TcT provides the certificate YES(O(1),O(n^1)). Strict DPs: { f^#(a, cons(x, k)) -> c_2(f^#(cons(x, a), k)) } Obligation: innermost runtime complexity Answer: YES(O(1),O(n^1)) We use the processor 'matrix interpretation of dimension 1' to orient following rules strictly. DPs: { 1: f^#(a, cons(x, k)) -> c_2(f^#(cons(x, a), k)) } Sub-proof: ---------- The following argument positions are usable: Uargs(c_2) = {1} TcT has computed following constructor-based matrix interpretation satisfying not(EDA). [empty] = [0] [f](x1, x2) = [1] x1 + [1] x2 + [0] [g](x1, x2) = [1] x1 + [1] x2 + [0] [cons](x1, x2) = [1] x1 + [1] x2 + [2] [f^#](x1, x2) = [2] x2 + [0] [c_1](x1) = [1] x1 + [0] [g^#](x1, x2) = [1] x1 + [1] x2 + [0] [c_2](x1) = [1] x1 + [0] [c_3] = [0] [c_4](x1) = [1] x1 + [0] [c] = [0] [c_1] = [0] [c_2](x1) = [1] x1 + [0] This order satisfies following ordering constraints [f^#(a, cons(x, k))] = [2] k + [2] x + [4] > [2] k + [0] = [c_2(f^#(cons(x, a), k))] The strictly oriented rules are moved into the corresponding weak component(s). We are left with following problem, upon which TcT provides the certificate YES(O(1),O(1)). Weak DPs: { f^#(a, cons(x, k)) -> c_2(f^#(cons(x, a), k)) } Obligation: innermost runtime complexity Answer: YES(O(1),O(1)) The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed. { f^#(a, cons(x, k)) -> c_2(f^#(cons(x, a), k)) } We are left with following problem, upon which TcT provides the certificate YES(O(1),O(1)). Rules: Empty Obligation: innermost runtime complexity Answer: YES(O(1),O(1)) Empty rules are trivially bounded Hurray, we answered YES(O(1),O(n^1))